﻿using Itech_Run.Sys.Application.Contracts.Dto;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace Itech_Run.Sys.Application.Contracts.Service
{
    public interface ISysModuleService : IApplicationService
    {
        Task<List<string?>> GetSysModuleApiController();
        Task<List<string?>> GetSysModuleApiControllerByUserRole(string operateUser);
        Task<string?> GetAssemblyName(string? apiController);

        Task<SysModuleDto> GetAsync(string id);
        Task<PagedResultDto<SysModuleDto>> GetListAsync(SysModuleListDto listDto);
        Task<SysModuleDto> InsertAsync(SysModuleCreateDto dto, string operateUser);
        Task<SysModuleDto> UpdateAsync(SysModuleUpdateDto dto, string operateUser);
        Task DeleteAsync(string id);
        Task<List<SysModuleTreeDto>> GetSysModuleTree(string application);
        Task<List<SysModulePermissionTreeDto>> GetSysModulePermissionTree(string role,string application);

        Task<List<SysModuleApiPathDto>> GetSysModuleApiPath(string operateUser);
        Task<List<SysModuleButtonAuthDto>> GetSysModuleButtonAuth(string operateUser);
    }
}
